The present invention relates to computer systems and their operating systems, and more specifically to computer hardware configurations dependent on a selected operating system.
The computer industry is experiencing rapid changes, as new products emerge and new technologies develop into new products. As new cards, adapters, and other devices have been introduced, an effort has been made to ensure compatibility, not only with the present computer systems, but also with likely directions the computer industry might take in the future.
Both hardware and software compatiility have been of concern, since new products have had to interface with motherboards, interrupt controllers, processors, and memory devices of preexisting systems, and also with preexisting software such as operating systems and applications. To this end, peripherals have been designed to fit into slots in typical bus standards, such as E/ISA, PCI, and MCA Many devices, such as expansion memories, also provide in PROMs infornmation, such as maximum bus speed, that is readable by an operating systenm These systems allow a user to plug a peripheral into a preexisting system, after which the peripheral is able to exchange information with other devices in the system.
Many computer systems have peripheral programmable interrupt controllers that, during run-time, receive interrupt requests from a number of devices and provide both a xe2x80x9csummaryxe2x80x9d interrupt signal and a readable register value contaaing an indicator of which interrupt request was asserted. For example, an Intel(copyright) Model 8259A peripheral interrupt controller, or two 8259A peripheral interrupt controllers in cascade, have often been connected to a number of devices to receive signals indicating interrupt requests. When a device or a number of devices assert an interrupt request to an 8259A peripheral interrupt controller, the 8259A peripheral interrupt controller has responded by sending an INT signal to an INTR input of a CPU, and by providing a register with an indicator of the highest-priority interrupt device received since the last INT cycle. The CPU then has read and cleared that indicator from the register. The interrupt requests are asserted on interrupt request lines. The typical AT-compatible computer has 16 such lines, each connected to one ofthe two cascaded 8259A peripheral interrupt controllers. Thus, devices have been able to communicate through hardware with a processor, at run-time.
However, since there are typically a large number of devices in a computer system, the devices must be xe2x80x9cconfiguredxe2x80x9d to be assigned an interrupt request line. The system cannot xe2x80x9cknowxe2x80x9d at power-up what devices are connected, nor what resources (e.g., interrupt request lines) the device is capable of using. Therefore, configuration is necessary. Configuration is a dynamic process performed at power-up in which the system and devices negotiate a resource assignment. Since there are 16 such interrupt request lines in a typical AT-compatible computer, up to 16 devices may be configured during power up.
To configure a set of devices that are uninown at power-up, the xe2x80x9cPlug-and-Playxe2x80x9d system architecture has been developed. The Plug-and-Play architecture has allowed a user to install a new card with a device in an add-in slot in a bus, and then power up the machine. The Plug-and-Play architecture has sensed a card vendor""s identifier and a device identifier (xe2x80x9cIDxe2x80x9d) from the card or device, and has also sensed what system resources the card or device requires to perform its task. These have been provided in PROMs on the device itself or on a disk accompanying the device when it is purchased or from a file made available over the Internet. The device has thus provided information to the system in both hardware and software. The card has provided a card detection mechanism, a vendor and device ID, a resource list that can be read by the system, and a set of configuration registers or other storage devices that can be read and in many cases, be written into. The system at power up has then scanned each bus in the system to determine the current machine device population, its type, and its resource needs. The system has then proceeded with an isolation algorithm to xe2x80x9cisolatexe2x80x9d each card, one at a time, and configure the isolated card by assigning resources to it.
Unfortunately, the conflict-resolution approach of the Plug-and-Play system architecture has proven unduly restricting in a number of situations. Because the Plug-and-Play system architecture has assigned resources in order of each card""s serial identifier, each time the system has been powered-up, the same set of devices are configured. Those devices have been configured in the same order, session after session. If there are more devices than interrupt request lines, the devices having serial identifiers that are greater than too many other devices in the system are simply never configured under the Plug-and-Play system architecture. Users have occasionally purchased and installed cards for their computer systems, and found that when the cards were plugged into the system, the system could not detect the card, because too many other cards on the system had a smaller serial identifier value. The serial identifier cannot be reprogrammed by the user, since the essential characteristic of the serial identifier is that it differs from the serial identifier of every other device on the system The only solution is to unplug another device that is not being used, and re-boot the system.
It should be noted that the problem is not limited to compatibility with Plug-and-Play. Configuration and arbitration algorithms generally rely on some ordering of devices. Regardless of the configuration scheme used, however, some ordering of devices has typically been used to resolve conflict. The ordering of devices is predetermined by the algorithm itself. The user has typically not been permitted to alter the order, since it is necessary to prevent the user from accidentally giving two or more devices the same position in the ordering.
Briefly, the present invention includes devices that can be set to be detected or to be invisible to the Plug-and-Play architecture or similar architectures. Each device has a switch with a memory. Each switch is settable by software running on a processor in the system. When commanded to do so by software, the value in the device""s memory is set such that the device becomes invisible to a subsequent power-up configuration of the system. The device cannot be configured, i.e. cannot be assigned resources, including interrupt request lines. Because the device cannot receive interrupt request lines, those lines remain available to other devices on the system. The other devices can be assigned the necessary resources to operate properly. Thus, software can command a configuration that would otherwise be impossible. When commanded to do so by software, the memory is reset such that the device becomes visible and thus configurable by the plug-and-Play architecture.
The invention may be embodied in an ID select mask register on the PCI bus. The ID select mask register converts a utilization cycle into two subcycles. During the first subcycle, selected devices are masked and are thus xe2x80x9cinvisiblexe2x80x9d to the configuration hardware and software. After the first subeycle is completed, the ID select mask register is then reset, and the second subcycle is permitted to configured all PCI devices on the particular bus.
During each session, the software can command the configuration state of the subsequent session by setting or resetting all of the memories on all of the devices. When the system is rebooted and the Plug-and-Play architecture begins reconfiguring the system, the devices that are invisible are not assigned resources, while the visible devices are assigned resources including interrupt request lines.